package cn.com.huzo.service.purchase;

import cn.com.huzo.model.entities.purchase.PoLinesSurchargesEntity;
import huzofw.service.GenericManager;
import java.util.List;
import java.util.Map;

/**
 * 附加费管理服务对象接口。
 *
 * @author 吴旭
 */
public interface PoLinesSurchargesManager extends GenericManager<PoLinesSurchargesEntity, String> {

    /**
     * 根据给定的条件（headerId）信息，得到附加费明细表信息
     *
     * @param headerId 采购合同标识
     * @return 明细表信息
     * @throws java.lang.Exception
     */
    List<PoLinesSurchargesEntity> fetchAllByHeaderId(Long headerId) throws Exception;

    /**
     * 新增附加费数据。
     *
     * @param headerId 订单标识
     * @param limit 订单明细每页显示数
     * @param pageIndex 订单明细当前显示页
     * @param itemList 新增的附加费数据列表
     * @return 新增后的订单明细及附加费明细
     * @throws java.lang.Exception
     */
    Map<String, Object> insert(Long headerId, Integer limit, Integer pageIndex,
            List<PoLinesSurchargesEntity> itemList) throws Exception;

    /**
     * 更新附加费数据。
     *
     * @param headerId 订单标识
     * @param limit 订单明细每页显示数
     * @param pageIndex 订单明细当前显示页
     * @param itemList 要更新的附加费数据列表
     * @return 更新后的订单明细及附加费明细
     * @throws java.lang.Exception
     */
    Map<String, Object> update(Long headerId, Integer limit, Integer pageIndex,
            List<PoLinesSurchargesEntity> itemList) throws Exception;

    /**
     * 删除附加费数据。
     *
     * @param headerId 订单标识
     * @param linesId 要删除的附加费明细标识
     * @param deletedBy 删除者
     * @param poNo 订单号
     * @param desctiption 附加费说明
     * @param limit 订单明细每页显示数
     * @param pageIndex 订单明细当前显示页
     * @return 删除后的订单明细及附加费明细
     * @throws java.lang.Exception
     */
    Map<String, Object> delete(Long headerId, String linesId, Long deletedBy,
            String poNo, String desctiption, Integer limit, Integer pageIndex) throws Exception;
}
